/**
 * 文件：BaseContorl.java
 * 包名：com.ronri.list.editview.controls;   --- 正式发布时需要修正
 * 说明：自定义组件基类
 * 作者：MS During
 * 日期：2017/4/14
 * 历史：
 */
package com.ronri.list.editview.controls;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;

import com.cz.nongyetongv5.application.InitApplication;

import java.io.Serializable;

// 基类
public abstract class BaseControl
        implements
        IEditControl,
        Serializable {

    // 是否初次加载
    private boolean _bfirst = true;

    // 实例句柄
    private Context _context;

    // 是否编辑
    private boolean _bedit;

    // 控件布局
    private int _layoutid;

    // 保存内容
    private Object _mvalue;

    /***
     * 调用事件
     */
    public IEditControlEvent BaseControlEevnt = null;

    /***
     * 控件名称
     */
    public String ControlName = "BaseContorl";

    /***
     * 构造函数
     */
    public BaseControl() {
        super();
        _context = InitApplication.getInstance().getBaseContext();
    }

    /***
     * 构造函数
     *
     * @param context
     */
    public BaseControl(Context context) {
        _context = context;
    }

//    @Override
//    protected void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//    }

    /***
     * 设置实例句柄
     * @param context
     */
    public void setContext(Context context){
        _context = context;
    }

    /***
     * 返回实例句柄
     *
     * @return
     */
    public Context getContext() {
        return _context;
    }

    /***
     * 获取编辑的数据
     *
     * @return
     */
    public Object getData() {

        // 验证输入的内容是否为正确，不正确则提示信息
        boolean bReturn = this.Validate();

        // 验证失败的话，读取失败错误信息，并提示，否则直接返回
        if (false == bReturn) {
            return null;
        }

        return _mvalue;
    }

    /****
     * 设置值
     *
     * @param value
     */
    public void setData(Object value) {

        // 设置值
        _mvalue = value;

        if (false == _bfirst) {
            _bedit = true;
        }

        // 设置当前的内容为已经加载
        _bfirst = false;
    }

    /***
     * 是否编辑
     *
     * @return
     */
    public boolean isEdited() {
        return _bedit;
    }

    /***
     * 绑定组件布局
     *
     * @param layout
     */
    public void BindLayout(int layout) {
        _layoutid = layout;
    }

    /***
     * 获取当前Layout
     * @return
     */
    public int getLayout(){
        return _layoutid;
    }

    /***
     * View
     *
     * @return
     */

    public View getView(){
        return LayoutInflater.from(_context).inflate(_layoutid, null);
    }

    /***
     * 获取错误信息
     *
     * @return
     */
    @Override
    public String GetErrorMessage() {
        return "";
    }

    /***
     * 装载控件
     *
     * @return
     */
    @Override
    public boolean LoadEditControl() {

        return true;
    }

    @Override
    public String toString() {
        return super.toString();
    }
}
